<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://doc.hyperf.io
 * @contact  group@hyperf.io
 * @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE
 */

namespace App\Controller;

use App\Request\Video\RefuseVideoInviteRequest;
use App\Request\Video\VideoInviteRequest;
use App\Service\Index\CallDetailsService;
use App\Service\Index\FuncShieldingService;
use App\Service\Index\RefuseVideoInviteService;
use App\Service\User\DiscountVideoJoinService;
use App\Service\User\DiscountVideoQuitService;
use App\Service\User\DiscountVideoRankService;
use App\Service\User\DiscountVideoStatusService;
use App\Service\User\DiscountVideoUserService;
use Hyperf\HttpServer\Annotation\Middleware;
use Hyperf\HttpServer\Annotation\Middlewares;
use App\Middleware\UserActMiddleware;
use App\Middleware\JTAuthMiddleware;
use App\Service\Index\AppInfoService;
use App\Service\Index\BannerService;
use App\Service\Index\v1_1_0\BannerService as V1_1_0BannerService;
use App\Service\Index\CallCheckingService;
use App\Service\Index\CheckVersionService;
use App\Service\Index\FeedbackService;
use App\Service\Index\GetCoinSettingService;
use App\Service\Index\HangupCallService;
use App\Service\Index\HangupService;
use App\Service\Index\HangupVideoService;
use App\Service\Index\InviteVideoCallService;
use App\Service\Index\KeepWaittingService;
use App\Service\Index\NewUserCallService;
use App\Service\Index\PopDetailService;
use App\Service\Index\QaService;
use App\Service\Index\QuickCallService;
use App\Service\Index\RankService;
use App\Service\Index\ReportService;
use App\Service\Index\UpdateChannelService;
use App\Service\Index\v1_1_0\CheckFreeCallService;
use App\Service\Index\v1_1_4\FreeCallInfoService;
use App\Service\Index\v1_3_0\GetFreecallService;
use App\Service\Index\v1_2_0\CheckCallStatusService;
use App\Service\Index\v1_2_1\MainInfoService;
use App\Service\Index\v1_2_0\VideoCallingInfoService;
use App\Service\Index\v1_2_0\VoiceCallingInfoService;
use App\Service\Index\v1_2_2\AnswerCallService;
use App\Service\Index\v1_2_2\MatchCallService;
use App\Service\Index\v1_2_7\RewardTipsService;
use App\Service\Index\v1_2_7\TvWallService;
use App\Service\Index\v1_3_0\ActExtranceService;
use App\Service\Index\v1_3_0\CheckFreeNumService;
use App\Service\Index\v1_3_0\HostTaskRewardService;
use App\Service\Index\v1_3_0\PopDetailService as V1_3_0PopDetailService;
use App\Service\Index\v1_3_0\PopShowService;
use App\Service\Index\v1_3_3\MainExtranceService;
use App\Service\Index\VideoCallService;
use App\Service\Index\VoiceCallDetailService;
use App\Service\Index\VoiceCallService;
use App\Service\Index\VoiceTextService;
use App\Service\User\HostListService;
use App\Service\User\UserDetailService;
use App\Service\User\UserListService;
use App\Service\User\v1_1_4\UserDetailExtraService;
use App\Service\User\v1_1_4\UserGiftListService;
use App\Service\User\v1_2_1\HostListService as V1_2_1HostListService;
use App\Service\User\v1_2_1\UserListService as V1_2_1UserListService;
use Hyperf\HttpServer\Annotation\RequestMapping;
use Hyperf\HttpServer\Annotation\Controller;

/**
 * @Controller(prefix="")
 * @Middleware(JTAuthMiddleware::class)
 */
class IndexController extends AbstractController
{
    /**
     * 版本检测
     * @RequestMapping(path="version/check", methods="post")
     * 
     */
    public function version_check(CheckVersionService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 轮播图
     * @RequestMapping(path="banner", methods="post")
     * 
     */
    public function banner(BannerService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 轮播图
     * @RequestMapping(path="v1_1_0/banner", methods="post")
     *
     */
    public function banner_V1_1_0(V1_1_0BannerService $service){
        return $service->response();
    }

    /**
     * 悬浮-新手福利，一键语聊
     * @RequestMapping(path="pop_detail", methods="post")
     * 
     */
    public function pop_detail(PopDetailService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 声优列表
     * @RequestMapping(path="host/list", methods="post")
     * 
     */
    public function host_list(HostListService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 用户列表
     * @RequestMapping(path="user/list", methods="post")
     * 
     */
    public function user_list(UserListService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 用户详情
     * @RequestMapping(path="user/detail", methods="post")
     * 
     */
    public function user_detail(UserDetailService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 用户额外详情
     * @RequestMapping(path="v1_1_4/user/detail_extra", methods="post")
     * 
     */
    public function user_detail_extra(UserDetailExtraService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 魅力（豪气）排行榜
     * @RequestMapping(path="rank/list", methods="post")
     * 
     */
    public function rank_list(RankService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - Banner位 （废弃）
     * @RequestMapping(path="banner/list", methods="post")
     * 
     */
    public function banner_list(BannerService $service)
    {
        return $service->response();
    }

    /**
     * 意见反馈
     * @RequestMapping(path="feedback", methods="post")
     * 
     */
    public function feedback(FeedbackService $service)
    {
        return $service->response();
    }

    /**
     * 常见问题
     * @RequestMapping(path="qa_list", methods="post")
     * 
     */
    public function qa_list(QaService $service)
    {
        return $service->response();
    }

    /**
     * 新手免费拨打语聊
     * @RequestMapping(path="call/new_free", methods="post")
     * 
     */
    public function call_new_free(NewUserCallService $service)
    {
        return $service->response();
    }

    /**
     * 一键语聊
     * @RequestMapping(path="call/quick", methods="post")
     * 
     */
    public function call_quick(QuickCallService $service)
    {
        return $service->response();
    }

    /**
     * 拨打语音电话
     * @RequestMapping(path="call", methods="post")
     * @Middleware(UserActMiddleware::class)
     */
    public function call(VoiceCallService $service)
    {
        return $service->response();
    }

    /**
     * 拨打视频通话
     * @RequestMapping(path="call_video", methods="post")
     * @Middleware(UserActMiddleware::class)
     */
    public function call_video(VideoCallService $service)
    {
        return $service->response();
    }

    /**
     * 拨打视频邀约
     * @RequestMapping(path="invite_call_video", methods="post")
     * @Middleware(UserActMiddleware::class)
     * @param VideoInviteRequest $request
     * @param InviteVideoCallService $service
     * @return array|mixed
     */
    public function call_invite_video(VideoInviteRequest $request,InviteVideoCallService $service)
    {
        $request->validated();

        return $service->response();
    }

    /**
     * 拒绝视频邀约
     * @RequestMapping(path="invite_call_video/refuse", methods="post")
     * @Middleware(UserActMiddleware::class)
     * @param RefuseVideoInviteRequest $request
     * @param RefuseVideoInviteService $service
     * @return array|mixed
     */
    public function refuseInviteVideo(RefuseVideoInviteRequest $request,RefuseVideoInviteService $service)
    {
        $request->validated();

        return $service->response();
    }

    /**
     * 话聊详情
     * @RequestMapping(path="call_detail", methods="post")
     * 
     */
    public function call_detail(VoiceCallDetailService $service)
    {
        return $service->response();
    }

    /**
     * 举报
     * @RequestMapping(path="report", methods="post")
     * 
     */
    public function report(ReportService $service)
    {
        return $service->response();
    }

    /**
     * 挂断电话(未接通)
     * @RequestMapping(path="hangup", methods="post")
     * 
     */
    public function hangup(HangupService $service)
    {
        return $service->response();
    }

    /**
     * 挂断通话
     * @RequestMapping(path="hangup_call", methods="post")
     * 
     */
    public function hangup_call(HangupCallService $service)
    {
        return $service->response();
    }

    /**
     * 挂断视频通话
     * @RequestMapping(path="hangup_video", methods="post")
     * 
     */
    public function hangup_video(HangupVideoService $service)
    {
        return $service->response();
    }

    /**
     * @RequestMapping(path="call_details", methods="post")
     */
    public function call_details(CallDetailsService  $service)
    {
        return $service->response();
    }

    /**
     * 检测通话
     * @RequestMapping(path="call_checking", methods="post")
     * 
     */
    public function call_checking(CallCheckingService $service)
    {
        return $service->response();
    }

    /**
     * 继续等待（一键匹配和新手福利）
     * @RequestMapping(path="waiting", methods="post")
     * 
     */
    public function waiting(KeepWaittingService $service)
    {
        return $service->response();
    }

    /**
     * 查询主播的收费设置
     * @RequestMapping(path="get/coin_setting", methods="post")
     * 
     */
    public function get_coin_setting(GetCoinSettingService $service)
    {
        return $service->response();
    }

    /**
     * APP信息
     * @RequestMapping(path="app_info", methods="post")
     * 
     */
    public function app_info(AppInfoService $service)
    {
        return $service->response();
    }

    /**
     * 语音资料的文案列表
     * @RequestMapping(path="voice/text", methods="post")
     * 
     */
    public function voice_text(VoiceTextService $service)
    {
        return $service->response();
    }

    /**
     * 更新频道信息
     * @RequestMapping(path="update_channel", methods="post")
     * 
     */
    public function update_channel(UpdateChannelService $service)
    {
        return $service->response();
    }

    /**
     * 首页天天福利资格检测
     * @RequestMapping(path="v1_1_0/free_call/check", methods="post")
     * 
     */
    public function free_call_check(CheckFreeCallService $service)
    {
        return $service->response();
    }

    /**
     * 首页天天福利信息查询
     * @RequestMapping(path="v1_1_4/free_call/info", methods="post")
     * 
     */
    public function free_call_info(FreeCallInfoService $service)
    {
        return $service->response();
    }

    /**
     * 礼物墙
     * @RequestMapping(path="v1_1_4/user/gift_list", methods="post")
     * 
     */
    public function user_gift_list(UserGiftListService $service)
    {
        return $service->response();
    }

    /**
     * 首页信息
     * @RequestMapping(path="v1_2_1/main_info", methods="post")
     * 
     */
    public function main_info(MainInfoService $service)
    {
        return $service->response();
    }

    /**
     * 语音呼叫页面信息
     * @RequestMapping(path="v1_2_0/voice/calling_info", methods="post")
     * 
     */
    public function voice_calling_info(VoiceCallingInfoService $service)
    {
        return $service->response();
    }

    /**
     * 视频呼叫页面信息
     * @RequestMapping(path="v1_2_0/video/calling_info", methods="post")
     * 
     */
    public function video_calling_info(VideoCallingInfoService $service)
    {
        return $service->response();
    }

    /**
     * 当前用户的通话状态
     * @RequestMapping(path="v1_2_0/call_status/check", methods="post")
     * 
     */
    public function call_status(CheckCallStatusService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 主播列表
     * @RequestMapping(path="v1_2_1/host/list", methods="post")
     * 
     */
    public function v1_2_1_host_list(V1_2_1HostListService $service)
    {
        return $service->response();
    }

    /**
     * 首页 - 用户列表
     * @RequestMapping(path="v1_2_1/user/list", methods="post")
     * 
     */
    public function v1_2_1_user_list(V1_2_1UserListService $service)
    {
        return $service->response();
    }

    /**
     * 女生快速匹配
     * @RequestMapping(path="v1_2_2/call/match", methods="post")
     * 
     */
    public function v1_2_2_call_match(MatchCallService $service)
    {
        return $service->response();
    }

    /**
     * 接听电话
     * @RequestMapping(path="v1_2_2/call/answer", methods="post")
     * 
     */
    public function call_answer(AnswerCallService $service)
    {
        return $service->response();
    }

    /**
     * 电视墙
     * @RequestMapping(path="v1_2_7/tv_wall", methods="post")
     * 
     */
    public function tv_wall(TvWallService $service)
    {
        return $service->response();
    }

    /**
     * 速配奖励提示列表
     * @RequestMapping(path="v1_2_7/reward_tips", methods="post")
     * 
     */
    public function reward_tips(RewardTipsService $service)
    {
        return $service->response();
    }

    /**
     * 首页活动入口信息
     * @RequestMapping(path="v1_3_0/act_entrance", methods="post")
     * 
     */
    public function act_entrance(ActExtranceService $service)
    {
        return $service->response();
    }

    /**
     * 首页弹窗入口信息
     * @RequestMapping(path="v1_3_0/pop_show", methods="post")
     * 
     */
    public function pop_show(PopShowService $service)
    {
        return $service->response();
    }

    /**
     * 首页弹窗入口信息
     * @RequestMapping(path="v1_3_0/pop_detail", methods="post")
     * 
     */
    public function v1_3_0_pop_detail(V1_3_0PopDetailService $service)
    {
        return $service->response();
    }

    /**
     * 领取免费券
     * @RequestMapping(path="v1_3_0/get_freecall", methods="post")
     * 
     */
    public function get_freecall(GetFreecallService $service)
    {
        return $service->response();
    }

    /**
     * 查询免费通话券数量
     * @RequestMapping(path="v1_3_0/freecall/check_num", methods="post")
     * 
     */
    public function check_free_nums(CheckFreeNumService $service)
    {
        return $service->response();
    }

    /**
     * 主播任务奖励领取
     * @RequestMapping(path="v1_3_0/host_task/reward", methods="post")
     * 
     */
    public function host_task_reawrd(HostTaskRewardService $service)
    {
        return $service->response();
    }

    /**
     * 首页功能入口
     * @RequestMapping(path="v1_3_3/main_exrance", methods="post")
     * 
     */
    public function main_exrance(MainExtranceService $service)
    {
        return $service->response();
    }

    /**
     * 功能屏蔽
     * @RequestMapping(path="func_shielding", methods="post")
     *
     */
    public function func_shielding(FuncShieldingService $service)
    {
        return $service->response();
    }

    /**
     * 特惠视频列表
     * @RequestMapping(path="discount_video_user",methods="post")
     */
    public function discount_video_user(DiscountVideoUserService $service)
    {
        return $service->response();
    }

    /**
     * 特惠视频排行榜
     * @RequestMapping(path="discount_video_rank",methods="post")
     */
    public function discount_video_rank(DiscountVideoRankService $service)
    {
        return $service->response();
    }

    /**
     * 加入视频特惠
     * @RequestMapping(path="discount_video/join",methods="post")
     */
    public function discount_video_join(DiscountVideoJoinService $service)
    {
        return $service->response();
    }

    /**
     * 退出视频特惠
     * @RequestMapping(path="discount_video/quit",methods="post")
     */
    public function discount_video_quit(DiscountVideoQuitService $service)
    {
        return $service->response();
    }

    /**
     * 视频特惠状态
     * @RequestMapping(path="discount_video/status",methods="post")
     */
    public function discount_video_status(DiscountVideoStatusService $service)
    {
        return $service->response();
    }
}
